home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / oper_sys / oasis / ossxmpls.lha / examples / quick.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-03-25  |  860 b   |  42 lines

  1. /* C version of quicksort benchmark */
  2.  
  3. #include <stdio.h>
  4.  
  5. int ilist[50] = {27,74,17,33,94,18,46,83,65, 2,
  6.                  32,53,28,85,99,47,28,82, 6,11,
  7.                  55,29,39,81,90,37,10, 0,66,51,
  8.                   7,21,85,27,31,63,75, 4,95,99,
  9.                  11,28,61,74,18,92,40,53,59, 8};
  10.  
  11. int list[50];
  12.  
  13. qsort(l, r)
  14. int l, r;
  15. {
  16.    int v, t, i, j;
  17.  
  18.    if (l<r) {
  19.         v=list[l]; i=l; j=r+1;
  20.         do {
  21.             do i++; while (list[i]<v);
  22.             do j--; while (list[j]>v);
  23.             t=list[j]; list[j]=list[i]; list[i]=t;
  24.         } while (j>i);
  25.         list[i]=list[j]; list[j]=list[l]; list[l]=t;
  26.         qsort(l,j-1);
  27.         qsort(j+1,r);
  28.    }
  29. }
  30.  
  31. main()
  32. {
  33.    int i, j;
  34.  
  35.    for(j=0; j<10000; j++) {
  36.        for(i=0;i<50;i++) list[i]=ilist[i];
  37.        qsort(0,49);
  38.    }
  39.    for(i=0; i<50; i++) printf("%d ",list[i]);
  40.    printf("\n");
  41. }
  42.